package _09_Method;
/**
 * 声明
 * 修饰符列表 返回值类型 方法名 (参数列表){方法体}
 * 分类
 * 静态方法
 * 使用static修饰的方法
 * 成员方法
 * 没有static修饰的方法
 * 构造方法
 * 用于创建对象
 * 调用
 * 静态方法
 * 类名.静态变量名(参数)
 * 当前类中类名可以省略
 * 成员方法
 * 对象.成员方法名(参数)
 * 
 * 为什么静态方法调用需要加类名呢?
 * 如果想要使用一个数据,必须先找到这个数据
 * 如果你想打我,必须先找到我
 * 
 * 方法不调用不执行,调用时才执行,并把结果返回到方法调用处
 * 
 * 程序是从上到下,从左到右执行,函数的出现,就可以任意顺序的编写,因为
 * 编写的时候不执行,调用才执行,所以 就需要考虑方法的编写位置,但是在
 * 方法的内部,依然是从上往下,从左到右执行,方法定义的时候不执行
 * 
 * 特殊的方法:main
 * 所有方法的调用起点和终点  都是在main中
 * @author lenovo
 * @Date 2020年6月28日
 * @Time 下午6:44:09
 */
public class Method_05 {

	public static void main(String[] args) {
		m1();
		Method_05.m1();
		// 调用别的类的静态方法的时候,必须加类名
		// m2();应该是A.m2();
		A.m2();

		// 只要是调用其他类中的静态数据,必须加对应类的类名
		A.m1();

		// 接收方法的返回值,因为返回值类型的int,所以用int声明的变量就可以接收返回的值
		int i = m4(false);
		System.out.println(i);
	}

	// 不调用不执行
	public static void m1() {
		System.out.println("Method_05 m1  execute");
		// 方法m1调用方法m3
		m3();
	}

	public static void m3() {
		System.out.println("Method_05 m3  execute");
	}

	public static int m4(boolean flag) {
		if (flag) {
			return 1;
		} else {
			return 0;
		}
	}
}

class A {
	public static void m2() {
		System.out.println("m2 execute");
	}

	public static void m1() {
		System.out.println("A m1 execute");
	}
}